package com.todo.strategy.offline.infrastructure.mapper;

import com.todo.strategy.offline.infrastructure.entity.po.PlanRelationPO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * (PlanRelation)表数据库访问层
 *
 * @author zhangwenxiang
 * @since 2024-03-04 00:19:47
 */
@Mapper
public interface PlanRelationMapper {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    PlanRelationPO queryPlanRelationPOById(Long id);

    /**
     * 新增数据
     *
     * @param planRelation 实例对象
     * @return 影响行数
     */
    int insertPlanRelationPO(PlanRelationPO planRelation);

    /**
     * 批量新增数据
     *
     * @param entities List<PlanRelation> 实例对象列表
     * @return 影响行数
     */
    int insertBatch(@Param("entities") List<PlanRelationPO> entities);

    /**
     * 修改数据
     *
     * @param planRelation 实例对象
     * @return 影响行数
     */
    int updatePlanRelationPOById(PlanRelationPO planRelation);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 影响行数
     */
    int removePlanRelationPOById(Long id);

    /**
     * 通过业务id查询数据列表
     *
     * @param businessId
     * @return
     */
    List<PlanRelationPO> queryPlanRelationListByBizId(Long businessId,Integer scene);

    /**
     * 根据场景和业务id删除数据
     *
     * @param scene
     * @param businessId
     * @return
     */
    int removePlanRelationByBizId(@Param("scene") Integer scene, @Param("businessId") Long businessId);

    /**
     * 根据业务id和场景类型查询清单关联列表
     *
     * @param scene
     * @param businessId
     * @return
     */
    List<PlanRelationPO> queryPlanRelationByBizId(@Param("scene") Integer scene, @Param("businessId") Long businessId);

    /**
     * 批量更新
     *
     * @param planRelationPOList
     * @return
     */
    @Deprecated
    int updatePlanRelationList(@Param("entities") List<PlanRelationPO> planRelationPOList);

    Boolean removePlanRelationByIdList(@Param("businessId")Long businessId,@Param("businessScene") Integer businessScene,@Param("idList") List<Long> idList);
}

